﻿Imports System.Runtime.InteropServices

Public Class Shell32ZipOnly
    ' Hier eine radikal abgespeckte Version der Com-Interfaces, die ganz 
    '  speziell nur die zum Zippen notwendigen Teile der Schnittstellen-
    '  Definitionen von Shell32 implementiert. Einige Member sind als "DummiXY" 
    '  implementiert, und dienen nur als Platzhalter, damit die Member 
    '  "NameSpace()", "CopyHere()" und "Items()" in der VTable richtig 
    '  addressiert werden. Weitere Member wurden weggelassen.

    ''' <summary>
    ''' Hier als "DummiXX" implementierte Member sind nicht zur Verwendung 
    '''  vorgesehen.
    ''' </summary>
    <ComImport()> _
    <Guid("D8F015C0-C278-11CE-A49E-444553540000")> _
    <TypeLibType(TypeLibTypeFlags.FOleAutomation)> _
    <InterfaceType(ComInterfaceType.InterfaceIsDual)> _
    Public Interface IShellDispatch
        ReadOnly Property Dummi1() As Object
        ReadOnly Property Dummi2() As Object
        Function [NameSpace](ByVal vDir As Object) As ShellFolder
    End Interface

    ''' <summary>
    ''' Hier als "DummiXX" implementierte Member sind nicht zur Verwendung 
    '''  vorgesehen.
    ''' </summary>
    <ComImport()> _
    <Guid("BBCBDE60-C3FF-11CE-8350-444553540000")> _
    <TypeLibType(TypeLibTypeFlags.FDispatchable Or TypeLibTypeFlags.FDual)> _
    <InterfaceType(ComInterfaceType.InterfaceIsIDispatch)> _
    Public Interface ShellFolder
        <DispId(1610743809)> _
        ReadOnly Property Dummi1() As Object
        <DispId(1610743810)> _
        ReadOnly Property Dummi2() As Object
        <DispId(1610743811)> _
        ReadOnly Property ParentFolder() As ShellFolder
        <DispId(0)> _
        ReadOnly Property Title() As String
        <DispId(1610743816)> _
        Sub CopyHere( _
            <System.Runtime.InteropServices.In()> _
            ByVal vItem As Object, _
            <System.Runtime.InteropServices.In()> _
            Optional ByVal vOptions As Object = Nothing)
        <DispId(1610743817)> _
        Function Dummi3(ByVal vItem As Object, _
                        ByVal iColumn As Integer) As String
        <DispId(1610743815)> _
        Sub MoveHere(ByVal vItem As Object, ByVal vOptions As Object)
        <DispId(1610743814)> _
        Sub Dummi4(ByVal bName As String, ByVal vOptions As Object)
        ' Ist nicht der korrekte Datentyp, aber für CopyHere() reichts
        <DispId(1610743812)> _
        Function Items() As Object
    End Interface

End Class
